Crate yasna [] [src]

A library for reading and writing ASN.1 data.

Example

To serialize ASN.1 data, you can use construct_der.

extern crate yasna;

fn main() {
    let der = yasna::construct_der(|writer| {
        writer.write_sequence(|writer| {
            writer.next().write_i64(10);
            writer.next().write_bool(true);
        })
    });
    println!("(10, true) = {:?}", der);
}

To deserialize ASN.1 data, you can use parse_ber or parse_der.

extern crate yasna;

fn main() {
    let asn = yasna::parse_der(&[48, 6, 2, 1, 10, 1, 1, 255], |reader| {
        reader.read_sequence(|reader| {
            let i = try!(reader.next().read_i64());
            let b = try!(reader.next().read_bool());
            return Ok((i, b));
        })
    }).unwrap();
    println!("{:?} = [48, 6, 2, 1, 10, 1, 1, 255]", asn);
}

Modules

models

Provides datatypes which correspond to ASN.1 types.

tags

Provides universal tag constants.

Structs

ASN1Error
BERReader

A reader object for BER/DER-encoded ASN.1 data.

BERReaderSeq

A reader object for a sequence of BER/DER-encoded ASN.1 data.

BERReaderSet

A reader object for a set of BER/DER-encoded ASN.1 data.

DERWriter

A writer object that accepts an ASN.1 value.

DERWriterSeq

A writer object that accepts ASN.1 values.

DERWriterSet

A writer object that accepts ASN.1 values.

Tag

An ASN.1 tag.

Enums

ASN1ErrorKind
BERMode

Used by BERReader to determine whether or not to enforce DER restrictions when parsing.

TagClass

An ASN.1 tag class, used in Tag.

Traits

FromBER

Functions

construct_der

Constructs DER-encoded data as Vec<u8>.

construct_der_seq

Constructs DER-encoded sequence of data as Vec<u8>.

parse_ber

Parses BER-encoded data.

parse_ber_general

Parses DER/BER-encoded data.

parse_der

Parses DER-encoded data.

Type Definitions

ASN1Result